home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / share / catman / p_man / cat3 / complib / slasyf.z / slasyf
Text File  |  1996-03-14  |  4KB  |  133 lines

  1.  
  2.  
  3.  
  4. SSSSLLLLAAAASSSSYYYYFFFF((((3333FFFF))))                                                          SSSSLLLLAAAASSSSYYYYFFFF((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      SLASYF - compute a partial factorization of a real symmetric matrix A
  10.      using the Bunch-Kaufman diagonal pivoting method
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE SLASYF( UPLO, N, NB, KB, A, LDA, IPIV, W, LDW, INFO )
  14.  
  15.          CHARACTER      UPLO
  16.  
  17.          INTEGER        INFO, KB, LDA, LDW, N, NB
  18.  
  19.          INTEGER        IPIV( * )
  20.  
  21.          REAL           A( LDA, * ), W( LDW, * )
  22.  
  23. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  24.      SLASYF computes a partial factorization of a real symmetric matrix A
  25.      using the Bunch-Kaufman diagonal pivoting method. The partial
  26.      factorization has the form:
  27.  
  28.      A  =  ( I  U12 ) ( A11  0  ) (  I    0   )  if UPLO = 'U', or:
  29.            ( 0  U22 ) (  0   D  ) ( U12' U22' )
  30.  
  31.      A  =  ( L11  0 ) (  D   0  ) ( L11' L21' )  if UPLO = 'L'
  32.            ( L21  I ) (  0  A22 ) (  0    I   )
  33.  
  34.      where the order of D is at most NB. The actual order is returned in the
  35.      argument KB, and is either NB or NB-1, or N if N <= NB.
  36.  
  37.      SLASYF is an auxiliary routine called by SSYTRF. It uses blocked code
  38.      (calling Level 3 BLAS) to update the submatrix A11 (if UPLO = 'U') or A22
  39.      (if UPLO = 'L').
  40.  
  41.  
  42. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  43.      UPLO    (input) CHARACTER*1
  44.              Specifies whether the upper or lower triangular part of the
  45.              symmetric matrix A is stored:
  46.              = 'U':  Upper triangular
  47.              = 'L':  Lower triangular
  48.  
  49.      N       (input) INTEGER
  50.              The order of the matrix A.  N >= 0.
  51.  
  52.      NB      (input) INTEGER
  53.              The maximum number of columns of the matrix A that should be
  54.              factored.  NB should be at least 2 to allow for 2-by-2 pivot
  55.              blocks.
  56.  
  57.      KB      (output) INTEGER
  58.              The number of columns of A that were actually factored.  KB is
  59.              either NB-1 or NB, or N if N <= NB.
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. SSSSLLLLAAAASSSSYYYYFFFF((((3333FFFF))))                                                          SSSSLLLLAAAASSSSYYYYFFFF((((3333FFFF))))
  71.  
  72.  
  73.  
  74.      A       (input/output) REAL array, dimension (LDA,N)
  75.              On entry, the symmetric matrix A.  If UPLO = 'U', the leading n-
  76.              by-n upper triangular part of A contains the upper triangular
  77.              part of the matrix A, and the strictly lower triangular part of A
  78.              is not referenced.  If UPLO = 'L', the leading n-by-n lower
  79.              triangular part of A contains the lower triangular part of the
  80.              matrix A, and the strictly upper triangular part of A is not
  81.              referenced.  On exit, A contains details of the partial
  82.              factorization.
  83.  
  84.      LDA     (input) INTEGER
  85.              The leading dimension of the array A.  LDA >= max(1,N).
  86.  
  87.      IPIV    (output) INTEGER array, dimension (N)
  88.              Details of the interchanges and the block structure of D.  If
  89.              UPLO = 'U', only the last KB elements of IPIV are set; if UPLO =
  90.              'L', only the first KB elements are set.
  91.  
  92.              If IPIV(k) > 0, then rows and columns k and IPIV(k) were
  93.              interchanged and D(k,k) is a 1-by-1 diagonal block.  If UPLO =
  94.              'U' and IPIV(k) = IPIV(k-1) < 0, then rows and columns k-1 and
  95.              -IPIV(k) were interchanged and D(k-1:k,k-1:k) is a 2-by-2
  96.              diagonal block.  If UPLO = 'L' and IPIV(k) = IPIV(k+1) < 0, then
  97.              rows and columns k+1 and -IPIV(k) were interchanged and
  98.              D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
  99.  
  100.      W       (workspace) REAL array, dimension (LDW,NB)
  101.  
  102.      LDW     (input) INTEGER
  103.              The leading dimension of the array W.  LDW >= max(1,N).
  104.  
  105.      INFO    (output) INTEGER
  106.              = 0: successful exit
  107.              > 0: if INFO = k, D(k,k) is exactly zero.  The factorization has
  108.              been completed, but the block diagonal matrix D is exactly
  109.              singular.
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.